package com.ht.module.file.service;

import com.ht.module.file.dto.OperationFileDto;
import com.ht.module.file.entity.FileInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ht.util.Pager;
import org.springframework.ui.Model;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import java.io.File;

/**
 * <p>
 * 文件信息表 服务类
 * </p>
 *
 * @author hejialun
 * @since 2024-06-12
 */
public interface FileInfoService extends IService<FileInfo> {

    /**
     * 分页查询文件
     * @param pager
     * @param en
     * @return
     */
    Pager<FileInfo> findPage(Pager<FileInfo> pager, FileInfo en);


    /**
     * 上传文件-并保存在文件信息表
     * @param file：文件对象
     * @param en：文件信息实体
     * @return
     */
    FileInfo uploadFile(MultipartFile file,FileInfo en);

    /**
     * 下载文件
     * @param fileId
     */
    void downloadFileByFileId(String fileId);

    /**
     * 安全权限删除文件
     * @param fileId
     */
    void delFileByFileId(String fileId);

    /**
     * 检查图片权限
     * @param fileId
     * @return
     */
    FileInfo operateFileAuth(String fileId);

    /**
     * 预览文件
     * @param fileId
     * @param model
     * @return
     */
    ModelAndView viewFile(String fileId, Model model);

    /**
     * 编辑文件
     * @param fileId
     * @param model
     * @return
     */
    ModelAndView editFile(String fileId, Model model);

    /**
     * 解压到指定目录
     * @param en
     */
    void decompression(OperationFileDto en) ;


    /**
     * 浏览器预览图片资源
     * @param fileId
     * @return
     */
    void viewFileByWindow(String fileId);

    /**
     * 复制文件
     * @param en
     * @return
     */
    FileInfo copyFile(OperationFileDto en);

    /**
     * 文件转pdf
     * @param fileId
     * @return
     */
    FileInfo fileToPdf(String fileId);

    /**
     * 移动文件
     * @param en
     * @return
     */
    FileInfo moveFile(OperationFileDto en);
}
